shell 练习-a.txt有b.txt没有

有两个文件a.txt和b.txt,需求是,把a.txt中有的并且b.txt中没有的行找出来,并写入到c.txt,然后计算c.txt文件的行数。

1
2
3
4
5
6
7
8
9
10
11
12
#!/bin/bash
n=`wc -l a.txt|awk '{print $1}'`
[ -f c.txt ] && rm -f c.txt
for i in `seq 1 $n`
do
l=`sed -n "$i"p a.txt`
if ! grep -q "^$l$" b.txt
then
echo $l >>c.txt
fi
done
wc -l c.txt

或者用grep实现

1
grep -vwf b.txt a.txt > c.txt; wc -l c.txt